有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的调用方法问题

public class Tester {

    private String text;

    public void text() {
        text = "abc";
    }

    public static void main(String[] args) {
        Tester test = new Tester();
        System.out.println(test.text);
    }
}

为什么要打印null?另外,如果我在print命令中写入test.text(),为什么会出现错误?我想我需要像那样调用这个方法


共 (5) 个答案

  1. # 1 楼答案

    字符串对象在构造时被分配null——也就是说,当您声明new Tester()时,text字段被分配null。这是所有对象类型的默认值,所有基本体都被指定为零(如果基本体是布尔值,则为false)

    没有为它分配任何内容,打印null的默认行为是打印文本"null"

    至于你的第二个问题——这不起作用的原因:

    System.out.println(test.text());
    

    text()是返回void或不返回任何内容的方法调用。方法调用不会返回任何结果,因此无法打印任何内容

    您希望在任何打印语句之前将调用移动到text(),以便正确填充该字段:

    Tester test = new Tester();
    test.text();
    System.out.println(test.text);
    

    。。。对于这样的事情,有一个约定:如果希望在构造时填充字段,请创建一个接受它作为参数的构造函数

    public Tester(String text) {
        this.text = text;
    }
    

    构建它时,不需要担心对text()的任何无关调用;只需打印字段

    Tester test = new Tester("abc");
    System.out.println(test.text);
    
  2. # 2 楼答案

    null因为private String text;null,因为您没有调用public void text()来设置String text的值

    打印前打电话给text()

    Tester test=new Tester();
    test.text();
    System.out.println(test.text);
    

    输出:

    abc
    

    PS.

    根据评论=>“我能直接写System.out.println(test.text())吗?”

    对于该集合return键入String并从中返回String

    所以把你的代码改成

    public String text() {
            return "abc";    
        }
    

    Test test = new Test();
    System.out.println(test.text());
    

    输出:

    abc
    
  3. # 3 楼答案

    它正在打印null,因为所有类类型的默认值都为null,您尚未设置文本,仍在尝试打印。 如果您想打印abc,请遵循以下任一方法

    1 call you text method explicitly like test.text();

    2 initialize yourtext in constructor as follows

    Tester(){
    text="abc";
    }
    
  4. # 4 楼答案

    您应该首先调用test.text();来给test一个值

  5. # 5 楼答案

    因为text是一个类变量,所以它默认初始化为null。如果它是int,那么它将被初始化为0

    在您的程序中,您没有调用text(),因此文本的值不会改变。现在在main方法中,您正在打印文本,因此它的打印^{

    如果我写测试的话。text()在print命令中,为什么会出现错误

    这是因为text()的返回类型为void